1. Field of the Invention
In general, the present invention provides a computer-implemented method, system and program product for comparing Application Program Interfaces (APIs) between JAVA byte code releases. Specifically, the present invention provides an accurate and efficient way to determine any API differences between two releases of JAVA byte code.
2. Related Art
As the use of the JAVA (JAVA is a trademark of Sun Microsystems in this country and/or abroad) programming language becomes more prevalent, many new software products are being developed in JAVA. In many instances, a software product will have multiple releases or versions. One major problem with having multiple releases is maintaining backward compatibility so that new releases can support the functionality of previous releases. Between two Software Development Kit (SDK) releases, the problem would be to maintain backward compatibility of Application Program Interfaces (APIs). As known, an API is the specific method by which a programmer writing an application program can make requests of an operating system or another application. In general, an API can be contrasted with a graphical user interface or a command interface (both of which are direct user interfaces) as interfaces to an operating system or a program. When developing APIs, a developer will often use a modeling tool such as the RATIONAL modeling tool (RATIONAL is a trademark of International Business Machines of Armonk, N.Y., in this country and/or abroad), which is commercially available from International Business Machines, Corp. of Armonk, N.Y. RATIONAL allows a developer to define a model using Unified Modeling Language (UML), and automatically generate APIs based thereon.
To date, many solutions have been proposed for determining the difference between two software releases. None of these proposed solutions, however, provides a way to determine the API differences between two releases of JAVA byte code. Specifically, under the JAVA programming language, JAVA code is first developed and then later compiled into binary or byte code (e.g., by a JAVA Virtual Machine), which represents the final “deliverable” to the customer. Existing solutions determine the differences between two releases using the uncompiled JAVA code. This is usually performed either by manually parsing the JAVA code, or by using a utility that references comments inserted by developers during the development process. However, manually determining the differences requires both a great deal of manpower and time. Moreover, relying on developer comments assumes that all necessary comments have been inserted. Since it is very easy for a developer to forget to insert a comment, there is a high likelihood that API differences between releases will go unnoticed. Still yet, because the uncompiled JAVA code does not represent the final “deliverable” to the customer, there is no way to ensure complete accuracy in the analysis.
In view of the foregoing, there exists a need for a computer-implemented method, system and program product for comparing Application Program Interfaces (APIs) between JAVA byte code releases. That is, a need exists for a way to determine the changes made to the APIs of two releases of JAVA byte code. To this extent, a need exists for any classes in common to both releases to be compared to determine if any APIs were modified between the two releases. Still yet, a need exists for classes added to, or removed from the second release (with respect to the first release) to be identified.